package com.face.managesystem.mapper;

import com.face.managesystem.pojo.ManagerInfo;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

/**
 * 管理者 mapper。【作用于普通管理者】
 */
@Repository
@Mapper
public interface ManagerMapper {

    /**
     * 判断 是否存在该管理者信息。
     * @param userID：
     * @return
     *      true：存在。
     *      false：不存在。
     */
    @Select("select count(*)=1  FROM manager_info WHERE userID=#{userID}")
    Boolean isUser(String userID);


    /**
     * 用户名和密码是否正确。
     * @param userID：管理员ID。
     * @param password：密码。
     * @return
     *      true：登录成功。
     *      false：登录失败。
     */
    @Select("select count(*)=1 FROM manager_info WHERE userID=#{userID} AND `password`=#{password}")
    Boolean login(@Param("userID")String userID, @Param("password") String password);

    /**
     * 判断用户登录状态。
     * @param userID：管理者ID。
     * @return
     *      true：登录中。
     *      false：没登录。
     */
    @Select("SELECT count(*)=1 FROM manager_login_state WHERE userID=#{userID} AND isLogin=1")
    Boolean loginState(String userID);

    /**
     * 判断用户是否存在登录表中。
     * @param userID：管理者ID。
     * @return
     *      true：存在。
     *      false：不存在。
     */
    @Select("select count(*)=1  FROM manager_login_state WHERE userID=#{userID}")
    Boolean isUserState(String userID);

    /**
     * 添加 管理者当前登录状态。
     * @param userID：管理者ID。
     * @param isLogin：登录状态，不使用。
     */
    @Insert("INSERT INTO manager_login_state (userID,isLogin) VALUES (#{userID},1)")
    Boolean addUserState(String userID, Boolean isLogin);

    /**
     * 修改 管理者当前的登录状态。
     * @param userID：管理者ID。
     * @param isLogin：登录状态。0：已退出；1：登录中。
     */
    @Update("UPDATE manager_login_state SET isLogin=#{isLogin} WHERE userID=#{userID}")
    void updateState(@Param("userID") String userID, @Param("isLogin") Integer isLogin);

    /**
     * 管理者 个人信息。
     * @param userID：管理者ID。
     * @return
     *      管理者个人信息对象。
     */
    @Select("SELECT userID,`password`,email FROM manager_info WHERE userID=#{userID}")
    ManagerInfo managerInfo(String userID);
}
